import React, { Component } from 'react'
import { Route, Redirect } from 'react-router-dom'
import { hasToken } from '@/utils/storage'
import { message } from 'antd'
// 对Route做了封装
export default class AuthRoute extends Component {
  render() {
    const { component: Com, ...rest } = this.props
    return (
      <Route
        {...rest}
        // 通过render()渲染组件
        render={(params) => {
          // 做额外的逻辑处理
          if (!hasToken()) {
            message.warn('请先登录')
            // 我们希望用户在登录成功后跳转回当前退出登录的页面
            const routename = params.location.pathname
            return (
              <Redirect
                to={{
                  pathname: '/login',
                  // search: '?path=' + routename, //参数在url地址栏
                  state: { from: routename }, // 地址栏看不多，可以是props.location.state.from来获取来源
                }}
              ></Redirect>
            )
          }
          // 渲染的组件
          return <Com {...params}></Com>
        }}
      ></Route>
    )
  }
}
